<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here http://mucdongblog.wordpress.com/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/</title>
</head>
<body>
<div class="post-467 post type-post status-publish format-standard hentry category-iphone category-mobile-programming" id="post-467">

			<h2 class="title">iPhone: Tìm hiểu kiến trúc của một ứng dụng&nbsp;iPhone</h2>

			<div class="entry">
				<div class="postbody entry clearfix">
					<p>Ở bài viết này chúng ta sẽ cùng nhau tìm hiểu tổng quan kiến trúc của một ứng dụng iPhone như thế nào.</p>
<p><img width="652" height="486" src="https://lh4.googleusercontent.com/-vcIrg3z8NyE/UdaCwPxLcNI/AAAAAAAABWY/-HJw-PCezWE/w652-h486-no/iphone_01.PNG" alt="" class="alignnone"></p>
<p><span id="more-467"></span></p>
<p>Khi user tap vào icon của ứng dụng, hệ thống sẽ launch ứng dụng dụng bằng việc gọi phương thức main() của nó, đây chính là entry point của ứng dụng</p>
<p><span style="color:#993300;">int main(int argc, char *argv[])</span></p>
<p><span style="color:#993300;">{</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; @autoreleasepool {</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; &nbsp; &nbsp; return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; }</span></p>
<p><span style="color:#993300;">}</span></p>
<p>Mỗi ứng dụng iPhone đều có một thể hiện duy nhất của lớp <span style="color:#993300;">UIApplication</span>, lớp này là cung cấp một điểm tập trung để kiểm soát và điều phối các ứng dụng chạy trên iPhone. Trong phương thức <span style="color:#993300;">main()</span> sẽ tạo ra một <span style="color:#993300;">autorelease pool</span> (được sử dụng để quản lý bộ nhớ) và thực hiện lời gọi phương thức <span style="color:#993300;">UIApplicationMain</span> của lớp <span style="color:#993300;">UIApplication</span>. Phương thức <span style="color:#993300;">UIApplicationMain</span> này sẽ tạo ra một thể hiện Singleton của lớp <span style="color:#993300;">UIApplication</span>, trong ứng dụng, ta có thể truy xuất thể hiện này qua phương thức <span style="color:#993300;">shareApplication</span>.</p>
<p>Trách nhiệm quản lý các hành vi mức cao của ứng dụng được lớp <span style="color:#993300;">UIApplication</span> giao lại cho đối tượng <span style="color:#993300;">UIApplicationDelegate</span>, đây thực chất là một protocol cung cấp các phương thức xử lý các sự kiện cơ bản của ứng dụng: khi ứng dụng được launch, ứng dụng chuyển xuống background, ứng dụng thoát, bộ nhớ không đủ… đối tượng <span style="color:#993300;">UIApplicationDelegate</span> này ta sẽ tạo ra và cung cấp cho đối tượng Singleton <span style="color:#993300;">UIApplication</span> (ta sẽ tìm hiểu việc cung cấp đối tượng delegate ở đoạn sau). Và khi ứng dụng được launch, phương thức <span style="color:#993300;">-(BOOL)application: didFinishLaunchingWithOptions:</span> sẽ được gọi.</p>
<p><span style="color:#993300;">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions</span></p>
<p><span style="color:#993300;">{</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; // Override point for customization after application launch.</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; self.window.backgroundColor = [UIColor whiteColor];</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; [self.window makeKeyAndVisible];</span></p>
<p><span style="color:#993300;">&nbsp; &nbsp; return YES;</span></p>
<p><span style="color:#993300;">}</span></p>
<p>Trong phương thức này ta sẽ hiển thị đối tượng <span style="color:#993300;">UIWindow</span> của ứng dụng, đối tượng này tạm xem như là đối tượng hiển thị chính cho ứng dụng (ta sẽ tìm hiểu sau), các đối tượng hiển thị con khác <span style="color:#993300;">UIView</span> sẽ lần lượt được thêm vào trên đối tượng <span style="color:#993300;">UIWindow</span> chính này</p>
<p><img width="519" height="523" src="https://lh3.googleusercontent.com/-OU2KL0uZtfU/UdaCuLP8TPI/AAAAAAAABWQ/Uv3hestmPLg/w519-h523-no/iphone_02.PNG" alt="" class="alignnone"></p>
<p><img width="894" height="280" src="https://lh4.googleusercontent.com/-FT62NTzwZWA/UdaCwq4bfQI/AAAAAAAABWg/RieBNfqBrhs/w894-h280-no/iphone_03.PNG" alt="" class="alignnone"></p>
<h2></h2>
<h2>Window và View</h2>
<p>iPhone OS sử dụng window và view để hiển thị các nội dung đồ họa trên màn hình. Mặc dù có nhiều điểm tương tự giữa window và view nhưng vai trò của chúng có khác nhau.</p>
<h3 style="padding-left:30px;">Vai trò của UIWindow</h3>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Một ứng dụng iPhone thường chỉ có duy nhất một window, được đại diện bởi một thể hiện của lớp UIWindow. Ứng dụng của bạn tạo window này tại thời điểm launch ứng dụng, add một hoặc nhiều view vào nó và hiển thị. Sau đó, bạn hiếm khi cần lại đối tượng window này.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Trong iOS, một đối tượng window không có các đối tượng “trang sức” mang tính trực quan như nút đóng, thanh tiêu đề và nó không thể đóng trực tiếp bởi người dùng.</p>
<h3 style="padding-left:30px;">Vai trò của UIView</h3>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Một view, thể hiện của lớp UIView, định nghĩa một vùng trên màn hình, trong ứng dụng iPhone, view đóng vai trò hiển thị giao diện và đáp ứng các tương tác với giao diện đó. Mỗi đối tượng view có trách nhiệm render nội dung và đáp ứng các sự kiện touch trong vùng của nó.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ngoài trách nhiệm trên, view còn quản lý một hoặc nhiều view con của nó.</p>
<h3 style="padding-left:30px;">Các lớp UIKit View</h3>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lớp UIView chỉ định nghĩa các thuộc tính của một view nhưng không có các thể hiện mang tính trực quan. Thay vì đó, UIKit sử dụng các lớp con để định nghĩa cho các control chuẩn như text field, button, toolbar…</p>
<p><img width="400" height="617" src="https://lh3.googleusercontent.com/-qRWJx88_UoI/UdaCz0rcr5I/AAAAAAAABW4/EkSQxNHgzcI/w400-h617-no/iphone_06.PNG" alt="" class="alignnone"></p>
<p>Như vây, khi xây dựng một ứng dụng, chúng ta sẽ thao tác trực tiếp với các đối tượng UIKitView này.</p>
<p>Qua bài viết này, hy vọng chúng ta sẽ phần nào nắm được kiến trúc tổng quan của một ứng dụng iOS. Chúng ta sẽ tiếp tục tìm hiểu qua bài viết sắp tới với ứng dụng HelloWorld.</p>
		<div style="display: none" class="geo geo-post" id="geo-post-467">
			<span class="latitude">16.421028</span>
			<span class="longitude">107.698488</span>
		</div>
<div style="position: relative; width:300px; text-align: center; padding: 0; margin: 10px auto; overflow: hidden; clear: both;" class="wpa">
<a rel="nofollow" href="http://en.wordpress.com/about-these-ads/" style="position: absolute; text-align: left; display: block; font: 9px/1 sans-serif; text-decoration: underline;" sl-processed="1">About these ads</a>
<script type="text/javascript">
		var wpcom_adclk_hovering = false;
		var wpcom_adclk_recorded = false;
		var wpcom_adclk_theme = "Fusion";
		var wpcom_adclk_slot = "wpcom_below_post";
		var wpcom_adclk_network = ( typeof wpcom_adclk_network === "undefined" ) ? "" : wpcom_adclk_network ;

		jQuery(document).ready( function() {
			function wpcom_adclk_hover_yes() { wpcom_adclk_hovering = true; }
			function wpcom_adclk_hover_no() { wpcom_adclk_hovering = false; }
			jQuery(".wpa").click(wpcom_adclk_click);
			jQuery(".wpa iframe").hover( wpcom_adclk_hover_yes, wpcom_adclk_hover_no );
			jQuery(".wpa object").hover( wpcom_adclk_hover_yes, wpcom_adclk_hover_no );

			jQuery(window).blur( function() {
				if ( wpcom_adclk_hovering ) { wpcom_adclk_click(); }
			});
		});

		function wpcom_adclk_impression() {
			var stat_gif = document.location.protocol + "//stats.wordpress.com/g.gif?v=wpcom-no-pv";
			stat_gif += "&amp;x_ads_imp_theme=" + wpcom_adclk_theme;
			stat_gif += "&amp;x_ads_imp_placement="+wpcom_adclk_slot;
			stat_gif += "&amp;x_ads_imp_network=" + wpcom_adclk_network;
			stat_gif += "&amp;x_ads_imp_theme_network="+wpcom_adclk_theme+"_"+wpcom_adclk_network;
			new Image().src = stat_gif + "&amp;baba=" + Math.random();
			return true;
		}

		function wpcom_adclk_click() {
			if (wpcom_adclk_recorded) { return true; } // no double counting
			var stat_gif = document.location.protocol + "//stats.wordpress.com/g.gif?v=wpcom-no-pv";
			stat_gif += "&amp;x_ads_click_theme=" + wpcom_adclk_theme;
			stat_gif += "&amp;x_ads_click_placement="+wpcom_adclk_slot;
			stat_gif += "&amp;x_ads_click_network=" + wpcom_adclk_network;
			stat_gif += "&amp;x_ads_click_theme_network="+wpcom_adclk_theme+"_"+wpcom_adclk_network;

			new Image().src = stat_gif + "&amp;baba=" + Math.random();
			wpcom_adclk_recorded = true;
			var now=new Date(); var end=now.getTime()+250;
			while(true){now=new Date();if(now.getTime()&gt;end){break;}}
			return true;
		}

if ( typeof GA_googleAddAttr == 'function' ) {
GA_googleAddAttr("AdOpt", "1");
GA_googleAddAttr("Origin", "other");
GA_googleAddAttr("LangId", "446");
GA_googleAddAttr("Domain", "mucdongblog.wordpress.com");
GA_googleAddAttr("BlogId", "11426267");
GA_googleAddAttr("PageURL", "http://mucdongblog.wordpress.com/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/");
GA_googleAddAttr("Tag", "iphone");
GA_googleAddAttr("Tag", "mobile-programming");
GA_googleAddAttr("theme_bg", "ffffff");
GA_googleAddAttr("theme_border", "eeeeee");
GA_googleAddAttr("theme_text", "666666");
GA_googleAddAttr("theme_link", "20a3ca");
GA_googleAddAttr("theme_url", "ffb200");
GA_googleAddAdSensePageAttr("google_page_url", "http://mucdongblog.wordpress.com/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/");
GA_googleFillSlot("wpcom_below_post");
}
</script><script src="http://pubads.g.doubleclick.net/gampad/ads?correlator=2042254057137466&amp;output=json_html&amp;callback=GA_googleSetAdContentsBySlotForSync&amp;impl=s&amp;client=ca-pub-3443918307802676&amp;slotname=wpcom_below_post&amp;page_slots=wpcom_below_post&amp;cust_params=AdOpt%3D1%26Origin%3Dother%26LangId%3D446%26Domain%3Dmucdongblog.wordpress.com%26BlogId%3D11426267%26PageURL%3Dhttp%253A%252F%252Fmucdongblog.wordpress.com%252F2013%252F07%252F05%252Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%252F%26Tag%3Diphone%252Cmobile-programming%26theme_bg%3Dffffff%26theme_border%3Deeeeee%26theme_text%3D666666%26theme_link%3D20a3ca%26theme_url%3Dffb200&amp;cookie=ID%3Db926020eb4cf5143%3AT%3D1393403796%3AS%3DALNI_MZMYK9GXpxu_wUtCYHfNl4If6A4jQ&amp;url=http%3A%2F%2Fmucdongblog.wordpress.com%2F2013%2F07%2F05%2Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%2F&amp;ref=http%3A%2F%2Fwww.google.com.vn%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D2%26ved%3D0CCwQFjAB%26url%3Dhttp%253A%252F%252Fmucdongblog.wordpress.com%252F2013%252F07%252F05%252Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%252F%26ei%3DBv8OU47OK4PQkwXR6YGoCg%26usg%3DAFQjCNHEfGGkpUq9gPu-MqFE5kw_pK0IDA%26sig2%3DNtR2Li-WXdnNm2O8pG6byw%26bvm%3Dbv.61965928%2Cd.dGI%26cad%3Drja&amp;lmt=1393496180&amp;dt=1393496181613&amp;cc=21&amp;url=http%3A%2F%2Fmucdongblog.wordpress.com%2F2013%2F07%2F05%2Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%2F&amp;biw=1903&amp;bih=930&amp;adk=3842876467&amp;adx=635&amp;ady=4311&amp;ifi=1&amp;oid=3&amp;u_tz=540&amp;u_his=1&amp;u_java=true&amp;u_h=1080&amp;u_w=1920&amp;u_ah=1040&amp;u_aw=1920&amp;u_cd=24&amp;u_nplug=9&amp;u_nmime=62&amp;flash=12.0.0&amp;gads=v2&amp;ga_vid=269485631.1393496182&amp;ga_sid=1393496182&amp;ga_hid=62793114&amp;ga_wpids=UA-52447-2"></script><div id="google_ads_div_wpcom_below_post_ad_wrapper">
<div style="display:inline-block;" id="google_ads_div_wpcom_below_post_ad_container"><div id="grv-personalization-16" style="display: block; height: 250px; width: 100%; opacity: 1;"><iframe scrolling="no" frameborder="0" src="http://rma-api.gravity.com/v1/api/intelligence/w2?sg=361837bc83c4c2cba7b350dff56a564f&amp;pl=16&amp;ug=&amp;b=42&amp;ad=&amp;sp=332&amp;sourceUrl=http%3A%2F%2Fmucdongblog.wordpress.com%2F2013%2F07%2F05%2Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%2F&amp;frameUrl=http%3A%2F%2Fmucdongblog.wordpress.com%2F2013%2F07%2F05%2Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%2F&amp;clientTime=1393496182560&amp;pageViewId%5BwidgetLoaderWindowUrl%5D=http%3A%2F%2Fmucdongblog.wordpress.com%2F2013%2F07%2F05%2Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%2F&amp;pageViewId%5BtimeMillis%5D=1393496182559&amp;pageViewId%5Brand%5D=7084531883552617&amp;rr=http%3A%2F%2Fwww.google.com.vn%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D2%26ved%3D0CCwQFjAB%26url%3Dhttp%253A%252F%252Fmucdongblog.wordpress.com%252F2013%252F07%252F05%252Fiphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone%252F%26ei%3DBv8OU47OK4PQkwXR6YGoCg%26usg%3DAFQjCNHEfGGkpUq9gPu-MqFE5kw_pK0IDA%26sig2%3DNtR2Li-WXdnNm2O8pG6byw%26bvm%3Dbv.61965928%2Cd.dGI%26cad%3Drja" style="width: 100%; height: 250px; opacity: 1; overflow: hidden;"></iframe></div>
<script type="text/javascript">
  //&lt;![CDATA[
 function _grc(k){return(document.cookie.match('(^|; )'+k+'=([^;]*)')||0)[2]}
    (function(){
    window.gravityInsightsParams = {
      'type': 'content',
      'site_guid': '361837bc83c4c2cba7b350dff56a564f',
      'user_guid': _grc('grvinsights'),
      'sourceUrl': 'mucdongblog.wordpress.com',
    };
    var b,c,d,e,f,g,h,i;f=(b=!0===gravityInsightsParams.useGravityUserGuid?1:0,e=b?"":gravityInsightsParams.user_guid||(null!=(g=/grvinsights=([^;]+)/.exec(document.cookie))?g[1]:void 0)||"",c=(null!=(h=window.jQuery)?null!=(i=h.fn)?i.jquery:void 0:void 0)||"","http://rma-api.gravity.com/v1/api/intelligence/wl?jq="+c+"&amp;sg="+gravityInsightsParams.site_guid+"&amp;ug="+e+"&amp;ugug="+b+"&amp;pl=16&amp;id=grv-personalization-16&amp;type=iframe");
    window.grvMakeScript=function(j){var a;a=document.createElement("script");a.type="text/javascript";a.async=!0;a.src=j;return a};d=document.getElementsByTagName("script")[0];f&amp;&amp;d.parentNode.insertBefore(window.grvMakeScript(f),d);})();
  //]]&gt;
</script>

</div>
</div>

</div>
<style type="text/css">
div.wpa&gt;div { margin-top: 1em; } #google_ads_div_wpcom_below_post_adsafe_ad_container { display: block !important; }
</style>
<script type="text/javascript">
jQuery( window ).load( function() {
    if ( jQuery(".wpa script[src*='shareth.ru']").length &gt; 0 || jQuery(".wpa iframe[src*='boomvideo.tv']").length &gt; 0 || jQuery(".wpa iframe[src*='viewablemedia.net']").length &gt; 0 || jQuery(".wpa .sharethrough-placement").length &gt; 0 ) {
        jQuery( '.wpa' ).css( 'width', '400px' );
    }
setTimeout(function(){if(typeof GS_googleAddAdSenseService !== 'function'){new Image().src=document.location.protocol+"//stats.wordpress.com/g.gif?v=wpcom-no-pv&amp;x_noads=adblock&amp;baba="+Math.random()}},100);
} );
</script>
<div class="sharedaddy sd-like-enabled" id="jp-post-flair"><div data-name="like-post-frame-11426267-467-530f1072eeb4d" data-src="//widgets.wp.com/likes/#blog_id=11426267&amp;post_id=467&amp;origin=mucdongblog.wordpress.com&amp;obj_id=11426267-467-530f1072eeb4d" id="like-post-wrapper-11426267-467-530f1072eeb4d" class="sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-loaded"><h3 class="sd-title">Like this:</h3><div style="height: 55px; display: none;" class="likes-widget-placeholder post-likes-widget-placeholder"><span class="button"><span>Like</span></span> <span class="loading">Đang tải ...</span></div><iframe width="100%" height="55px" frameborder="0" src="//widgets.wp.com/likes/#blog_id=11426267&amp;post_id=467&amp;origin=mucdongblog.wordpress.com&amp;obj_id=11426267-467-530f1072eeb4d" name="like-post-frame-11426267-467-530f1072eeb4d" class="post-likes-widget jetpack-likes-widget"></iframe><span class="sd-text-color"></span><a class="sd-link-color"></a></div>
<div class="jp-relatedposts" id="jp-relatedposts" style="display: block;">
	<h3 class="jp-relatedposts-headline"><em>Related</em></h3>
<div class="jp-relatedposts-items jp-relatedposts-items-minimal"><p data-post-format="false" data-post-id="473" class="jp-relatedposts-post jp-relatedposts-post0"><span class="jp-relatedposts-post-title"><a rel="nofollow" title="iPhone: Tìm hiểu lập trình iPhone với ứng dụng HelloWorld

Ở phần này giả sử chúng ta đã cài đặt Xcode 4 (phiên bản hiện tại là 4.6.3) trên máy tính có cài hệ điều hành MAC OS Ví dụ…" href="/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/?relatedposts_to=473&amp;relatedposts_order=0" sl-processed="1">iPhone: Tìm hiểu lập trình iPhone với ứng dụng HelloWorld</a></span><span class="jp-relatedposts-post-context">In "iPhone"</span></p><p data-post-format="false" data-post-id="41" class="jp-relatedposts-post jp-relatedposts-post1"><span class="jp-relatedposts-post-title"><a rel="nofollow" title="Quản lý điểm thi của một trường ĐH (P.3)

Đến giai đoạn này, sau khi đã có bản đặc tả yêu cầu, chúng ta sẽ bắt tay vào phân tích hệ thống trên Có hai phương pháp phổ biến…" href="/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/?relatedposts_to=41&amp;relatedposts_order=1" sl-processed="1">Quản lý điểm thi của một trường ĐH (P.3)</a></span><span class="jp-relatedposts-post-context">In "Phân tích &amp; Thiết kế"</span></p><p data-post-format="false" data-post-id="59" class="jp-relatedposts-post jp-relatedposts-post2"><span class="jp-relatedposts-post-title"><a rel="nofollow" title="Các mẫu thiết kế hướng đối tượng (P.2)

Trong phần này ta sẽ tìm hiểu về các mẫu thiết kế trong nhóm mẫu kiến tạo (Creational Pattern) 1.Mẫu kiến tạo(Creational Pattern) Những mẫu này hỗ trợ cho một…" href="/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/?relatedposts_to=59&amp;relatedposts_order=2" sl-processed="1">Các mẫu thiết kế hướng đối tượng (P.2)</a></span><span class="jp-relatedposts-post-context">In "OOP"</span></p></div></div></div>				</div>



				<p class="postmetadata alt">

					<small>
					This entry was posted on Tháng Bảy 5, 2013, 17:04 and is filed under <a rel="category tag" title="Xem các bài viết trong iPhone" href="http://mucdongblog.wordpress.com/category/mobile-programming/iphone/" sl-processed="1">iPhone</a>, <a rel="category tag" title="Xem các bài viết trong Mobile Programming" href="http://mucdongblog.wordpress.com/category/mobile-programming/" sl-processed="1">Mobile Programming</a>. You can follow any responses to this entry through <a title="RSS 2.0" href="http://mucdongblog.wordpress.com/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/feed/" sl-processed="1">RSS 2.0</a>.

					Bạn có thể <a href="#respond" sl-processed="1">gửi phản hồi</a>, hoặc <a rel="trackback" href="http://mucdongblog.wordpress.com/2013/07/05/iphone-tim-hieu-kien-truc-cua-mot-ung-dung-iphone/trackback/" sl-processed="1">trackback</a> từ trang web của bạn.

										</small>

				</p>

			</div>

		</div>
</body>
</html>